/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package persistencia;

import Utiles.Utiles;
import entidades.PromocionImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.PromocionAgente;

/**
 *
 * @author Leandro
 */
public class IntermediarioPromocion extends IntermediarioPersistencia {

    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        String sql = "SELECT * FROM PROMOCION WHERE " + criterio.convertirAString();
        return sql;
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {

        List<Object> resultado = new ArrayList<Object>();
        PromocionImpl implementacion;
        PromocionAgente agente;

        try {
            while (result.next()) {
                implementacion = new PromocionImpl();
                agente = new PromocionAgente();
                agente.setPromocion(implementacion);

                agente.setOid(result.getString("oidPromocion"));
                agente.setCodPromocion(result.getInt("codPromocion"));
                agente.setNombrePromocion(result.getString("nombrePromocion"));
                agente.setFechaInicioVigencia(result.getDate("fechaInicioVigencia"));
                agente.setFechaFinVigencia(result.getDate("fechaFinVigencia"));
                agente.setPorcentaDescuentoPorCantidad(result.getDouble("porcentajeDescuentoPorCantidad"));
                agente.setPorcentaDescuentoPorDia(result.getDouble("porcentajeDescuentoPorDia"));
                agente.setCantProductos(result.getInt("cantProductos"));
                agente.setOidDia(result.getString("oidDia"));
                agente.setOidProducto(result.getString("oidProducto"));
                resultado.add(agente);
            }
            

        } catch (Exception e) {
            System.out.println("Error en materialización: " + e.toString());
        }

        return resultado;
    }

    @Override
    protected String generarSQLBuscarTodo() {
        return "SELECT * FROM PROMOCION";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
        return "SELECT * FROM PROMOCION WHERE oidPromocion = '" + oid+"'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
        PromocionAgente ob = (PromocionAgente) objeto;
        String sql = "INSERT INTO PROMOCION (oidPromocion, codPromocion, nombrePromocion, "
                + "fechaInicioVigencia, fechaFinVigencia, porcentajeDescuentoPorCantidad, porcentajeDescuentoPorDia, cantProductos, oidProducto, oidDia) VALUES ("
                + "'" + ob.getOid()
                //generarOid()
                //+ ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                + "', " + ob.getCodPromocion()
                + ", '" + ob.getNombrePromocion()
                + "', '" + Utiles.convertirATIMESTAMP(ob.getFechaInicioVigencia())
                + "', '" + Utiles.convertirATIMESTAMP(ob.getFechaFinVigencia())
                + "', " + ob.getPorcentaDescuentoPorCantidad()
                + ", " + ob.getPorcentaDescuentoPorDia()
                + ", " + ob.getCantProductos()
                + Utiles.verificarOIDvacio(ob.getOidProducto())
                +  Utiles.verificarOIDvacio(ob.getOidDia())
//                + ", '" + ob.getOidProducto()
//                + "', '" + ob.getOidDia()
//                + "')";
                 + ")";
        System.out.println("SQL Guardar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        PromocionAgente ob = (PromocionAgente) objeto;
        String sql = "UPDATE PROMOCION SET "
                + "codPromocion = '" + ob.getCodPromocion()
                + "', nombrePromocion = '" + ob.getNombrePromocion()
                + "', fechaInicioVigencia = '" + Utiles.convertirATIMESTAMP(ob.getFechaInicioVigencia())
                + "', fechaFinVigencia = '" + Utiles.convertirATIMESTAMP(ob.getFechaFinVigencia())
                + "', porcentajeDescuentoPorCantidad = " + ob.getPorcentaDescuentoPorCantidad()
                + ", porcentajeDescuentoPorDia = " + ob.getPorcentaDescuentoPorDia()
                + ", cantProductos = " + ob.getCantProductos()
                 + ", oidProducto = '" + ob.getOidProducto()
                 + "', oidDia = '" + ob.getOidDia()
                + "' WHERE oidPromocion = '" + ob.getOid() + "'";
        System.out.println("SQL Actualizar: " + sql);
    
        return sql;
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
        return "DELETE FROM PROMOCION WHERE oidPromocion = '" + ((Agente) objeto).getOid() + "'";
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
